package com.estate.system.domain;

// Listing.java - 房源数据模型

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import com.estate.common.config.JsonbStringTypeHandler;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.Date;

@Data
@TableName("listings")
@EqualsAndHashCode(callSuper = false)
@JsonIgnoreProperties(ignoreUnknown = true)
public class Listing {
    /**
     * 主键ID
     */
    @TableId(type = IdType.ASSIGN_ID)
    private Long id;

    /**
     * 买卖类型，sale/出售, rent/出租, auction/拍卖
     */
    @TableField(typeHandler = JsonbStringTypeHandler.class)
    private String listingType;

    /**
     * 最低价格
     */
    @TableField(typeHandler = JsonbStringTypeHandler.class)
    private String listingLower;

    /**
     * 最高价格
     */
    @TableField(typeHandler = JsonbStringTypeHandler.class)
    private String listingUpper;

    /**
     * 上市时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date listedDate;

    /**
     * 用户ID
     */
    private Long userId;

    /**
     * 房产状态
     */
    private String listingStatus;

    /**
     * 房东ID
     */
    private Long landlordId;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createdAt;

    /**
     * 更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updatedAt;

    /**
     * 租期,租约时长
     */
    private String leaseTerm;

    /**
     * 房产类型
     */
    private String propertyType;

    /**
     * 房产种类
     */
    private String listingCategory;

    /**
     * 地址信息
     */
    @TableField(typeHandler = JsonbStringTypeHandler.class)
    private String listingAddr;

    /**
     * 房产特性
     */
    @TableField(typeHandler = JsonbStringTypeHandler.class)
    private String listingFeatures;

    /**
     * 房产价格信息
     */
    @TableField(typeHandler = JsonbStringTypeHandler.class)
    private String listingPrice;

    /**
     * 房产费用
     */
    @TableField(typeHandler = JsonbStringTypeHandler.class)
    private String listingRates;

    /**
     * 看房时间
     */
    @TableField(typeHandler = JsonbStringTypeHandler.class)
    private String listingInspectionTimes;

    /**
     * 网络连接信息
     */
    @TableField(typeHandler = JsonbStringTypeHandler.class)
    private String listingLinks;

    /**
     * 房源详细图片
     */
    @TableField(typeHandler = JsonbStringTypeHandler.class)
    private String listingImages;

    /**
     * 上架时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date onMarketDate;

    /**
     * 可入住日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date availableDate;

    /**
     * 是否隐藏房源信息
     */
    private Boolean isHidden;

    /**
     * 房源ID（数据来源的ID）
     */
    private Integer listingId;

    /**
     * 时间线信息
     */
    @TableField(typeHandler = JsonbStringTypeHandler.class)
    private String timeline;

    /**
     * 代理人信息
     */
    @TableField(typeHandler = JsonbStringTypeHandler.class)
    private String agent;
}

